package com.eastfair.questionnaire.service;

import com.eastfair.annotation.model.LoadService;
import com.eastfair.boot.service.SuperService;
import com.eastfair.questionnaire.dto.QuestionDTO;
import com.eastfair.questionnaire.dto.QuestionnaireDTO;
import com.eastfair.questionnaire.entity.Question;
import com.eastfair.questionnaire.vo.AnswerVO;
import com.eastfair.questionnaire.vo.QuestionVO;
import com.eastfair.questionnaire.vo.QuestionnaireVO;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 业务接口
 * 问题
 * </p>
 *
 * @author yuwx
 * @date 2021-08-18
 */
public interface QuestionService extends SuperService<Question>, LoadService {
    /**
    *Description 查询问卷下所有问题
    *@Date 16:11 2021/8/25
    *@param projectId
    *@param questionnaireId
    *@return java.util.List<com.eastfair.questionnaire.vo.QuestionVO>
    *@Author yuwx
    **/
    List<QuestionVO> list(Long projectId, Long questionnaireId);
    /**
    *Description 查询问卷下所有问题以及答案（树状）
    *@Date 16:12 2021/8/25
    *@param projectId
    *@param questionnaireId
    *@return java.util.List<com.eastfair.questionnaire.vo.QuestionVO>
    *@Author yuwx
    **/
    List<QuestionVO> listWithAnswer(Long projectId, Long questionnaireId);
    /**
    *Description
     * 1.查询问卷下所有问题以及答案（树状）
     * 2.填充主体选择的答案
    *@Date 16:12 2021/8/25
    *@param projectId
    *@param questionnaireId
    *@param subjectId
    *@return java.util.List<com.eastfair.questionnaire.vo.QuestionVO>
    *@Author yuwx
    **/
    List<QuestionVO> listWithAnswer(Long projectId, Long questionnaireId, String subjectType, Long subjectId);
    /**
     *Description
     * 1.查询问卷下所有问题以及答案（末级）
     * 2.填充主体选择的答案
     *@Date 16:12 2021/8/25
     *@param projectId
     *@param questionnaireId
     *@param subjectId
     *@return java.util.List<com.eastfair.questionnaire.vo.QuestionVO>
     *@Author yuwx
     **/
    List<QuestionVO> listWithSelectedAnswer(Long projectId, Long questionnaireId, String subjectType, Long subjectId);
    /**
    *Description 获取单个问题
    *@Date 16:13 2021/8/25
    *@param projectId
    *@param id
    *@return com.eastfair.questionnaire.vo.QuestionVO
    *@Author yuwx
    **/
    QuestionVO get(Long projectId, Long id);

    QuestionVO save(QuestionDTO questionDTO);

    /**
    *Description 删除单个问题
    *@Date 16:13 2021/8/25
    *@param projectId
    *@param id
    *@return void
    *@Author yuwx
    **/
    void delete(Long projectId, Long id);
    /**
    *Description 删除问卷下的所有问题
    *@Date 16:41 2021/8/25
    *@param projectId
    *@param questionnaireId
    *@return void
    *@Author yuwx
    **/
    void deleteByQuestionnaire(Long projectId, Long questionnaireId);
}
